/*
 * main.c
 *
 *  Created on: 8/9/2014
 *      Author: meteoro
 */
/*																			*/
/*	   ______________________________________________________________       */
/*	  | TRABAJO PRACTICO ORGANIZACION DE COMPUTADORAS |66.20| 2C 2014|		*/
/*	  																		*/
/*																			*/


#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <getopt.h>


/* Funcion que muestra la ayuda */
void mostrar_ayuda (FILE* stream, int exit_code){

  fprintf (stream,
		"tp0 [OPTIONS] [file...]\n"
		"-h, --help\t se muestra esta ayuda.\n"
		"-s, --number-separator\t Indica el texto separador entre número de línea y la linea.\n"
		"-v, --starting-line-number\t Indica el numero de la primer linea.\n"
		"-i, --line-increment\t Indica el incremento entre lineas consecutivas.\n"
		"-t, --non-empty\t Si está presente, solo se deben numerar las lineas no vacias. Caso contrario, también deben numerar las lineas vacias.\n"
		"-l, --join-blank-lines\t Indica la cantidad de lineas vacias a agrupar en una única linea.\n"

		"\n");

  exit (exit_code);
}

/* Funcion que imprime el complemento de los mensajes de error */
void imprimir_leer_mas(FILE* stream, int exit_code){

	fprintf (stream, "Try `tp0 --help' for more information.\n");
	exit (exit_code);
}


int main (int argc, char* argv[]){

		const char* const opciones_cortas = "hs:v:i:tl:";
		int opcion=0;

		const struct option opciones_largas[] =
		{

			{ "help", 0, NULL, 'h' },
			{ "number-separator", required_argument, NULL, 's' },
			{ "starting-line-number", required_argument, NULL, 'v' },
			{ "line-increment", required_argument, NULL, 'i' },
			{ "non-empty", 0, NULL, 't' },
			{ "join-blank-lines", required_argument, NULL, 'l' },
			{ NULL, 0, NULL, 0 },
		};

		char* separador = NULL ;
		char* startingline = NULL ;
		char* incrementeentrelineas = NULL ;
		char* enumerarlineasvacias = 0;
		char* cantlineasagrupar = NULL ;

		/* Comienzo de la validacion de argumentos */
		while((opcion = getopt_long (argc, argv, opciones_cortas, opciones_largas, NULL)) != -1) {

			switch (opcion)
			{
			    case 'h':   /* -h o --help */
				    	mostrar_ayuda(stdout, EXIT_SUCCESS);
			    		break;

			    case 's':   /* Separador entre el numero y la linea */
			    		separador = optarg;
			    		break;

			    case 'v':   /* Numero de la primer linea*/
						startingline = optarg;
						break;

			    case 'i':   /* Incremento entre lineas consecutivas*/
						incrementeentrelineas = optarg;
						break;

			    case 't':   /* Incremento entre lineas consecutivas*/
						enumerarlineasvacias = 1;
						break;

			    case 'l':   /* Cantidad de lineas a agrupar en una sola linea*/
						cantlineasagrupar = optarg;
						break;
			  default:
				  	  	fprintf(stderr, "tp0: unknown error.\n");
				  		abort();
			}



		}
		if (separador != NULL ) fprintf(stdout,"Separador: %s\n",separador);


return 0;
}

